define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'occupants/index' + location.search,
                    add_url: 'occupants/add',
                    // edit_url: 'occupants/edit',
                    // del_url: 'occupants/del',
                    multi_url: 'occupants/multi',
                    import_url: 'occupants/import',
                    table: 'rooms_occupants',
                }
            });

            var table = $("#table");

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                fixedColumns: true,
                fixedRightNumber: 1,
                columns: [
                    [
                        {checkbox: true},
                        {field: 'id', title: __('Id')},
                        {field: 'user.nickname', title: __('User.nickname'), operate: 'LIKE'},
                        {field: 'user.avatar', title: __('User.avatar'), operate: 'LIKE', events: Table.api.events.image, formatter: Table.api.formatter.image},
                        {field: 'user.gender', title: __('User.gender')},
                        {field: 'rooms.title', title: __('Rooms.title'), operate: 'LIKE'},
                        {field: 'lights.code', title: __('Lights.code'), operate: 'LIKE'},
                        {field: 'playmoney', title: '游戏费用', operate: 'LIKE'},
                        {field: 'goodmoney', title: '点单费用', operate: 'LIKE'},
                        {
                            field: 'gift_time',
                            title: '赠送时长',
                            operate: 'LIKE',
                            formatter: function(value, row, index) {
                                // 将秒转换为分钟
                                if (value !== null && value > 0) {
                                    var minutes = Math.floor(value / 60); // 得到完整的分钟数

                                    return minutes + ' 分钟 '// 返回格式化的字符串
                                }
                                return '0 分钟'; // 如果没有数据或为 0 返回默认值
                            }
                        },
                        {field: 'status', title: __('Status'), searchList: {"0":'游戏中',"1":"已结束",'2':'已结算'}, formatter: Table.api.formatter.label},
                        {
                            field: 'pause_status',
                            title: '暂停状态',
                            searchList: {"1": '进行中', "2": "暂停"},
                            formatter: function(value, row, index) {
                                if (row.status == "0") {
                                    let labelHtml = '';
                                    if (value == "1") {
                                        labelHtml += '<span class="label label-success">计时中</span>';
                                    } else if (value == "2") {
                                        labelHtml += '<span class="label label-warning">暂停</span>';
                                    }
                                    return labelHtml;
                                } else if (row.status == "1") {
                                    return '<span class="label label-danger">已结束</span>'; // 使用标签样式
                                }
                                return '<span class="label label-danger">已结束</span>'; // 使用标签样式
                            }
                        },
                        {field: 'join_time', title: __('Join_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
                        {field: 'leave_time', title: __('Leave_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
                       // {field: 'unit_price', title: __('Unit_price'), operate:'BETWEEN'},

                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate
                           , buttons: [
                                {
                                    name: 'riderAssign',
                                    title: function(row) {
                                        return row.pause_status === 1 ? '暂停' : '恢复'; // 根据 pause_status 动态设置标题
                                    },
                                    text: function(row) {
                                        return row.pause_status === 1 ? '暂停' : '恢复'; // 根据 pause_status 动态设置文本
                                    },
                                    classname: 'btn btn-xs btn-info btn-click',
                                    icon: function(row) {
                                        return row.pause_status === 1 ? 'fa fa-pause' : 'fa fa-play'; // 确保使用适合FastAdmin的图标
                                    },
                                    visible: function(row) {
                                        return row.status === 0; // 仅在状态为0时可见
                                    },
                                    click: function (e, row) {
                                        if (confirm('您确定要操作吗？')) {
                                            $.ajax({
                                                url: 'occupants/pause_order?id=' + row.id,
                                                type: 'POST', // 选择合适的请求类型 (GET/POST)
                                                success: function (response) {
                                                    // 处理成功回调
                                                    if (response.code == 1) {
                                                        // 成功提示
                                                        $('#table').bootstrapTable('refresh');
                                                        Toastr.success('操作成功');
                                                    } else {
                                                        // 错误处理
                                                        alert(response.msg);
                                                    }
                                                },
                                                error: function (xhr, status, error) {
                                                    // 处理 AJAX 请求的错误
                                                    alert('请求出错: ' + error);
                                                }
                                            });
                                        }
                                    }
                                },
                                {
                                    name: 'riderAssign',
                                    title: '赠送',
                                    text: '赠送',
                                    classname: 'btn btn-xs btn-info btn-click',
                                    icon: 'fa fa-gift', // 赠送的图标
                                    visible: function(row) {
                                        return row.status === 0; // 仅在状态为0时可见
                                    },
                                    click: function(e, row) {
                                        // 弹出输入框，获取用户输入的分钟数
                                        var minutes = prompt('请输入赠送的分钟数：', '0'); // 默认值为0

                                        // 检查用户是否输入了有效的数字
                                        if (minutes !== null && !isNaN(minutes) && minutes > 0) {
                                            // 提交给服务器，进行赠送操作
                                            if (confirm('您确定要赠送 ' + minutes + ' 分钟给该用户吗？')) {
                                                $.ajax({
                                                    url: 'occupants/send_gift?id=' + row.id + '&minutes=' + minutes,
                                                    type: 'POST', // 选择适合的请求类型
                                                    success: function(response) {
                                                        // 处理成功回调
                                                        if (response.code === 1) {
                                                            $('#table').bootstrapTable('refresh');
                                                            Toastr.success('赠送成功');

                                                        } else {
                                                            alert(response.msg); // 提示错误信息
                                                        }
                                                    },
                                                    error: function(xhr, status, error) {
                                                        alert('请求出错: ' + error); // 提示请求错误
                                                    }
                                                });
                                            }
                                        } else {
                                            // 如果用户输入无效，提示用户
                                            alert('请输入一个有效的分钟数！');
                                        }
                                    }
                                },
                                {
                                    name: 'riderAssign',
                                    text: '结束',
                                    title: '结束',
                                    classname: 'btn btn-xs btn-info btn-click',
                                    icon: 'fa fa-flag',
                                    visible: function(row) {
                                        return row.status === 0; // 仅在状态为0时可见
                                    },
                                    click: function (e, row) {
                                        if (confirm('您确定要结束该订单吗？')) {
                                            $.ajax({
                                                url: 'occupants/end_order?id=' + row.id,
                                                type: 'POST', // 选择合适的请求类型 (GET/POST)
                                                success: function (response) {
                                                    // 处理成功回调
                                                    if (response.code == 1) {
                                                        // 成功提示
                                                        $('#table').bootstrapTable('refresh');
                                                        Toastr.success('结束成功');

                                                    } else {
                                                        // 错误处理
                                                        alert(response.msg);
                                                    }
                                                },
                                                error: function (xhr, status, error) {
                                                    // 处理 AJAX 请求的错误
                                                    alert('请求出错: ' + error);
                                                }
                                            });
                                        }
                                    }
                                },
                                {
                                    name: 'delayAction',
                                    title: '延时',
                                    text: '延时',
                                    classname: 'btn btn-xs btn-warning btn-click',
                                    icon: 'fa fa-clock', // 延时的图标
                                    visible: function (row) {
                                        return row.status === 0 && row.reservations_id !== null;
                                    },
                                    click: function (e, row) {
                                        // 显示模态框，并在模态框中存储行 ID
                                        $('#delayModal').data('rowId', row.id).modal('show');

                                        // 确认按钮的点击事件
                                        $('#confirmDelay').off('click').on('click', function () {
                                            var delayTime = $('#delayDatetime').val(); // 获取选择的时间
                                            if (delayTime) {
                                                // 格式化时间为 YYYY-MM-DD HH:mm:ss
                                                let formattedTime = formatDateTime(delayTime); // 调用格式化函数
                                                if (confirm('您确定要将时间延时到 ' + formattedTime + ' 吗？')) {
                                                    $.ajax({
                                                        url: 'occupants/delay_action?id=' + row.id + '&datetime=' + encodeURIComponent(formattedTime),
                                                        type: 'POST',
                                                        success: function (response) {
                                                            if (response.code === 1) {
                                                                $('#table').bootstrapTable('refresh');
                                                                Toastr.success('延迟成功');

                                                            } else {
                                                                alert(response.msg); // 提示错误信息
                                                            }
                                                        },
                                                        error: function (xhr, status, error) {
                                                            alert('请求出错: ' + error); // 提示请求错误
                                                        }
                                                    });
                                                    $('#delayModal').modal('hide'); // 成功后关闭模态框
                                                }
                                            } else {
                                                alert('请先选择一个有效的时间！');
                                            }
                                        });
                                    }
                                }
                            ],
                        }


                    ]
                ]
            });

            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        add: function () {
            Controller.api.bindevent();
        },
        edit: function () {
            Controller.api.bindevent();
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            }

        }
    };
    return Controller;
});

// 格式化函数
function formatDateTime(dateTimeString) {
    const date = new Date(dateTimeString);
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0'); // 月需要加1并填充为两位
    const day = String(date.getDate()).padStart(2, '0'); // 填充为两位
    const hour = String(date.getHours()).padStart(2, '0');
    const minute = String(date.getMinutes()).padStart(2, '0');
    const second = String(date.getSeconds()).padStart(2, '0');

    return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
}